package com.itbaizhan.mongotest.dao.impl;

import com.itbaizhan.mongotest.dao.OrderDao;
import com.itbaizhan.mongotest.entity.Orders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;

import java.util.List;
/*@Repository 是 Spring 的注解，用于声明一个 Bean。@Repository单独使用没用。可以这样理解，
注解放在接口上本来就没有意义，spring中在mapper接口上写一个@Repository注解，只是为了标识，
要想真正是这个接口被扫描，必须使用@MapperScannerConfigurer

相同点：
@Mapper和@Repository都是作用在dao层接口，使得其生成代理对象bean，交给spring 容器管理
对于mybatis来说，都可以不用写mapper.xml文件

不同点：
1、@Mapper不需要配置扫描地址，可以单独使用，如果有多个mapper文件的话，可以在项目启动类中加入@MapperScan(“mapper文件所在包”)
2、@Repository不可以单独使用，否则会报错误，要想用，必须配置扫描地址（@MapperScannerConfigurer）

*/
@Repository

public class OrderDaoImpl implements OrderDao {

   //使用MongoTemplate 进行实现增删查改操作
    @Autowired
    private MongoTemplate mongoTemplate;
    @Override
    public List<Orders> findOrdersByName(String name) {
        Query query = new Query();
        query.addCriteria(Criteria.where("name").is(name));

        return mongoTemplate.find(query,Orders.class);
    }
}
